package com.wingsboat;

import java.util.Scanner;

/**
 * @author wangzhong
 * @description: 最长子字符串的长度
 * 给你一个字符串 s，首尾相连成一个环形，请你在环中找出 'o' 字符出现了偶数次最长子字符串的长度。
 * @date 2024/7/23 10:52
 */
public class Test17 {
    public static void main(String[] args){
        String str = "looxdolx";
        int maxLength = 0;
        for(int i=0;i<str.length();i++){
            str = str.substring(1) + str.charAt(0);
            System.out.println(str);
            maxLength = Math.max(maxLength,getMaxLength(str));
        }
        System.out.println(maxLength);
    }
    public static int getMaxLength(String str){
        if(null == str) return 0;
        if(str.indexOf("o")<0) return str.length();
        int[] pre = new int[str.length()];
        for(int i = 0;i<str.length();i++){
            if(str.charAt(i) == 'o'){
                if(i==0){
                    pre[i] = 1;
                }else{
                    pre[i] = 1+pre[i-1];
                }
            }else{
                if(i==0){
                    pre[i] = 0;
                }else{
                    pre[i] = pre[i-1];
                }
            }
        }

        int maxLength = 0;
        for(int r=0;r<str.length();r++){
            for(int l=0;l<=r;l++){
                int count = getCharCount(l,r,pre);
                if(count%2==0){
                    maxLength = Math.max(maxLength,r-l+1);
                }
            }
        }
        return maxLength;
    }

    public static int getCharCount(int l,int r,int[] pre){
        if(l==0){
            return pre[r];
        }else{
            return pre[r]-pre[l-1];
        }
    }


}
